package controller;

import java.rmi.RemoteException;
import java.util.List;

import javax.xml.bind.ValidationException;

import business.BusinessDelegate;
import dto.AreaDTO;
import dto.ProductoDTO;
import dto.ProductoStockDTO;
import exceptions.ProductoException;

public class AdministradorProductos {

	private static AdministradorProductos instance = null;

	private AdministradorProductos() {

	}

	public static AdministradorProductos getInstance() {
		if (instance == null)
			return new AdministradorProductos();
		else
			return instance;
	}

	public List<ProductoDTO> listarProductos() throws RemoteException,
			ValidationException {

		return BusinessDelegate.getInstance().getSistema()
				.listarProductos();

	}
	
	public List<ProductoDTO> productosPorVencer(AreaDTO areaDTO, int rangoDias) throws RemoteException, ValidationException {
		return BusinessDelegate.getInstance().getSistema().consultarProductosPorVencer(areaDTO, rangoDias);
	}
	
	public List<ProductoStockDTO> stockPorProductos(AreaDTO areaDTO, List<ProductoDTO> productoDTOs) throws RemoteException, ValidationException {
		return BusinessDelegate.getInstance().getSistema().consultarStockPorProducto(areaDTO, productoDTOs);
	}
	
	public List<ProductoDTO> productosVencidos(AreaDTO areaDTO) throws RemoteException, ValidationException {
		return BusinessDelegate.getInstance().getSistema().consultarProductosVencidos(areaDTO);
	}
	
	public void ajustarInventario(AreaDTO areaDTO, ProductoDTO productoDTO, float ajuste, String motivoAjuste,
			String usuario) throws RemoteException, ValidationException, ProductoException {
		BusinessDelegate.getInstance().getSistema().ajustarInventario(areaDTO, productoDTO, ajuste, motivoAjuste, usuario);
	}

}
